'use strict';

const Controller = require('egg').Controller;

/**
 * @Controller 试题类型
 */
class QuestionController extends Controller {
    /**
     * @jwt
     * @summary 试题类型列表
     * @description 获取所有的试题类型
     * @router get /questions/types
     * @response 200 BaseResponse 请求成功
     */
    async types() {
        // 读取数据
        let res = await this.service.question.readTypeList();
        // 返回列表
        this.ctx.helper.send(200, res);
    }

    /**
     * @jwt
     * @summary 添加试题类型
     * @description 添加一个试题类型
     * @router post /questions/types
     * @request body CreateQuestionType
     * @response 200 BaseResponse 请求成功
     */
    async createType() {
        // 校验参数
        this.ctx.validate(this.ctx.rule.CreateQuestionType);
        // 保存数据库
        await this.service.question.addType(this.ctx.request.body);
        // 返回响应
        this.ctx.helper.send(201, null, '添加成功');
    }

    /**
     * @jwt
     * @summary 添加试题
     * @description 添加一个试题
     * @router post /questions
     * @request body CreateQuestionRequest 包含试题所需的请求体
     * @response 201 BaseResponse 添加成功
     */
    async create() {
        // 校验参数
        this.ctx.validate(this.ctx.rule.CreateQuestionRequest);
        // 保存数据库
        await this.service.question.add(this.ctx.request.body);
        // 返回响应
        this.ctx.helper.send(201, null, '添加成功');
    }

    /**
     * @jwt
     * @summary 试题列表
     * @description 获取考试列表
     * @router get /questions
     * @request query QuestionListQuery 查询参数
     * @response 200 BaseResponse 请求成功
     */
    async index() {
        // 校验参数
        this.ctx.validate(this.ctx.rule.QuestionListQuery);
        // 读取数据
        const res = await this.service.question.readList(this.ctx.query);
        // 返回数据
        this.ctx.helper.send(200, res);
    }
}

module.exports = QuestionController;
